package com.ruoyi.omp.api.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;
import com.ruoyi.omp.api.domain.vo.RoomVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 应收账单对象 omp_fe_bill
 *
 * @author cjie
 * @date 2021-09-23
 */
@Data
@ApiModel
public class FeApartmentBill extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** Id */
    @ApiModelProperty(value = "Id")
    private String id;

    /** 账单编号 */
    @Excel(name = "账单编号")
    @ApiModelProperty(value = "账单编号")
    private String billNum;

    /** 企业id */
    @Excel(name = "企业id")
    @ApiModelProperty(value = "企业id")
    private String enterpriseId;

    /** 费用类型 */
    @Excel(name = "费用类型")
    @ApiModelProperty(value = "费用类型")
    private String feeType;

    /** 费用类型名称 */
    @Excel(name = "费用类型名称")
    @ApiModelProperty(value = "费用类型名称")
    private String feeTypeName;

    /** 账单起始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "账单起始日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "账单起始日期")
    private Date beginDate;

    /** 账单结束日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "账单结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "账单结束日期")
    private Date endDate;

    @Excel(name = "租金")
    @ApiModelProperty(value = "租金")
    private BigDecimal rental = BigDecimal.valueOf(0);

    @Excel(name = "物管费")
    @ApiModelProperty(value = "物管费")
    private BigDecimal propertyFee = BigDecimal.valueOf(0);

    @Excel(name = "设施使用费")
    @ApiModelProperty(value = "设施使用费")
    private BigDecimal facilityFee = BigDecimal.valueOf(0);

    /** 应收金额 */
    @Excel(name = "应收金额")
    @ApiModelProperty(value = "应收金额")
    private BigDecimal receivableAmount = BigDecimal.valueOf(0);

    /** 实收金额 */
    @Excel(name = "实收金额")
    @ApiModelProperty(value = "实收金额")
    private BigDecimal payAmount;

    /** 结清状态(0待支付，1部分支付，2已支付) */
    @Excel(name = "结清状态")
    @ApiModelProperty(value = "结清状态(0待支付，1部分支付，2已支付)")
    private String payState;

    /** 账单状态(0执行中，1已作废，2已过期) */
    @Excel(name = "账单状态")
    @ApiModelProperty(value = "账单状态(0执行中，1已作废，2已过期)")
    private String billState;

    /** 费用内容 */
    @Excel(name = "费用内容")
    @ApiModelProperty(value = "费用内容")
    private String feeContent;

    /** 截止日期(逾期产生违约费) */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "截止日期(逾期产生违约费)", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "截止日期(逾期产生违约费)")
    private Date deadline;

    /** 删除标志(0正常 1删除) */
    @ApiModelProperty(value = "删除标志(0正常 1删除)")
    private String delFlag;

    /** 租赁记录id */
    @ApiModelProperty(value = "租赁记录id")
    private String recordId;

    /** 收款账户 */
    @Excel(name = "收款账户")
    @ApiModelProperty(value = "收款账户")
    private String receiptAccount;



    /** 总面积 */
    @Excel(name = "总面积")
    @ApiModelProperty(value = "总面积")
    private BigDecimal totalArea;

    /** 单价 */
    @Excel(name = "单价")
    @ApiModelProperty(value = "单价")
    private BigDecimal unitPrice;

    /** 账单生效日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "账单生效日期")
    private Date effectiveDate;

    //以下属性为页面视图属性
    /** 企业名称 */
    @Excel(name = "企业名称")
    @ApiModelProperty(value = "企业名称")
    private String enterpriseName;

    /** 应收违约金 */
    @Excel(name = "应收违约金")
    @ApiModelProperty(value = "应收违约金")
    private BigDecimal totalFine;

    /** 应收违约金 */
    @Excel(name = "应收违约金")
    @ApiModelProperty(value = "应收违约金")
    private List<FeFine> fineList;

    /** 房源列表 */
    @Excel(name = "房源列表")
    @ApiModelProperty(value = "房源列表")
    private List<RoomVO> rooms;


    /** 结清状态集合(0待支付，1部分支付，2已支付) */
    @Excel(name = "结清状态集合")
    @ApiModelProperty(value = "结清状态集合(0待支付，1部分支付，2已支付)")
    private List<String> payStateList;



    /** 是否确认 */
    @Excel(name = "是否确认",sort=2)
    @ApiModelProperty(value = "是否确认")
    private Boolean isSubmit;

    /** 已收违约金 */
    @Excel(name = "已收违约金")
    @ApiModelProperty(value = "已收违约金")
    private BigDecimal breakFeePay;

    private String details;

    //保证金
    private BigDecimal surety;
}
